package pe.edu.upc.jtigers.svpn.data.implement;

import java.util.Collection;

import org.springframework.stereotype.Repository;
import pe.edu.upc.jtigers.svpn.aplication.excepcion.DAOExcepcion;
import pe.edu.upc.jtigers.svpn.data.common.BaseDao;
import pe.edu.upc.jtigers.svpn.data.queryable.CategoriaQueryable;
import pe.edu.upc.jtigers.svpn.domain.data.CategoriaDao;
import pe.edu.upc.jtigers.svpn.domain.model.Categoria;

@Repository
public class CategoriaDaoImpl extends BaseDao<Categoria> implements
		CategoriaDao {

	@Override
	public Categoria registrarCategoria(Categoria categoria)
			throws DAOExcepcion {
		try {
			if (categoria.getIdCategoria() == 0) {
				entityManager.persist(categoria);
			} else {
				entityManager.merge(categoria);
			}
		} catch (Exception e) {
			throw new DAOExcepcion(e);
		}
		return categoria;
	}

	@Override
	public Categoria eliminarCategoria(int idCategoria) throws DAOExcepcion {
		// TODO Auto-generated method stub
		Categoria categoria = this.obtenerCategoria(idCategoria);
		categoria.setEliminado(true);
		this.registrarCategoria(categoria);
		return categoria;
	}

	@Override
	public Categoria obtenerCategoria(int idCategoria) throws DAOExcepcion {
		// TODO Auto-generated method stub
		return entityManager.find(Categoria.class, idCategoria);
	}

	@Override
	public Collection<Categoria> listarCategorias() throws DAOExcepcion {
		Collection<Categoria> entities = null;
		try {

			entities = this.getResultList(CategoriaQueryable.LISTAR);

		} catch (Exception e) {
			throw new DAOExcepcion(e);
		}
		return entities;
	}

}
